<?
	/* Se asegura que el archivo es incluido por el index */
		defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Clase_lst( $this );

	class Clase_lst extends Lst
	{
	function Clase_lst( &$oModule )
		{
			$this->Lst( $oModule );
			$this->cField = 'ncClase[]';
		}
	function setLevel()
		{
			switch ( $this->getOptionView() )
			{
				case 'E':
				case 'L':
					$this->aShowColumns = array( 'Nombre' , 'SubModulo', 'Tipo');
					break;
			}
		}
	function makeColumn( &$aRow, $cName )
	{
		switch ( $cName )
		{
			case 'KeyLookUp':
				$cReturn = $aRow['ncClase'];
				break;
		}
		return $cReturn;
	}
	function initialize()
		{
			$this->oFiltro = $this->oModule->loadClass( 'clase_frm' );
			$this->aFields = array_merge ( (array)$this->aFields,  (array)$this->oFiltro->getFieldArray() );
			$this->aFields['bSinArchivo'] = getParam('bSinArchivo');
			$this->aFields['ncCategoriaClase']	= getParam('ncCategoriaClase');
			$this->setTitle ( "Clases" );
			$this->setSummary( "Esta tabla contiene el listado de clases" );
			$this->addColumn ( 'Codigo', 'ncClase', true );			
			$this->addColumnAction ( 'Nombre', VER_CLASE, 'ncClase', 'cFisico' );
			$this->addColumn ( 'Tipo', 'cdTipoClase', true );
			$this->addColumn ( 'SubModulo', 'cdSubModulo', true );
			$this->addColumnAction ( 'Archivo', VER_ARCHIVO, 'cDirectorio,cArchivo', 'cFisico' );
			// Pone el tab de los Modulos
			$oTab =& $this->setIndex( INDEX_USER, TAB_TOP, 'cPathModule', true );
			initializeTabModulo( $oTab );
			$this->aFields['cPathModule']  = $oTab->getValue();
			if ( $this->aFields['cPathModule'] ) 
			{
				$oTab =& $this->setIndex( INDEX_USER, TAB_BOTTOM, 'ncSubModulo' );
				$oTab->setMatrix( $this->oDatabase->getMatrix("SELECT ncSubModulo, cdSubModulo FROM stSubModulo") );
			}
			$this->oDatabase = openMetadataDB ( $this->aFields['cPathModule'] );
		}
	function query()
		{
			// Arma el Query
				$cSql = "SELECT cdClase, Cla.cFisico, cdTipoClase, Cla.ncClase, Cla.ncTipoClase, Sub.cdSubModulo, Cla.ncSubModulo
					FROM  stClase as Cla
					LEFT JOIN stSubModulo as Sub
						ON  Sub.ncSubModulo = Cla.ncSubModulo
					JOIN scTipoClase as TCl
						ON TCl.ncTipoClase = Cla.ncTipoClase";
			// Arma el Filtro de la Consulta
				$this->oFiltro->setDefaultSearchField( "cFisico" );
				$this->oWhere->addArray ( $this->oFiltro->getFilterdArray() , 'Cla' );
				$this->oWhere->add( 'TCl.ncCategoriaClase', $this->aFields[ncCategoriaClase]);
				if ( getParam('bHuerfanas') ) $this->oWhere->addExpression ( "Cla.ncClase", "Cla.ncClase NOT IN ( SELECT ncClase FROM stAccionClase ) " );
				$cSql .= $this->oWhere->make();
			return $cSql;
		}
		function open()
		{
			// Ejecuta la Consulta
				if ( getParam('bSinArchivo') == 1 )
				{
					$this->oRecordset = new RecordsetMemory();
					$cSql = $this->query();
					$oRecordset = $this->oDatabase->recordset($cSql );
					$nqItems = 0;
					while( $oRecordset->moveNext() )
					{
						$cArchivo = $this->aFields['cPathModule'] .'/'. obtenerDirectorioClase( $this->aFields['cPathModule'] , $oRecordset->aFields['ncClase'] ) . '/' . $oRecordset->aFields['cFisico'];
						if ( !file_exists($cArchivo ) )
						{
							$nqItems++;
							$this->oRecordset->addRow ( $oRecordset->aFields );
						} 

					}
					$this->oPaging->setTotalItems ( $nqItems);
					return true;
				} else return parent::open();
		}
	function makeListActions()
		{
			$cParametroRegistro =  $this->getFieldString();
			$this->addListAction ( AGREGAR_CLASE , $cParametroRegistro, 'I' );
			$this->addListAction ( AGREGAR_CLASE_PARAMETRICA, $cParametroRegistro );
			$this->addListAction ( GENERAR_TEMPLATES_DE_CLASES, $cParametroRegistro);
			$this->addListAction ( ASIGNAR_ORDENES_A_LAS_CLASES, $cParametroRegistro );
			$this->addListAction ( CONSULTAR_RELACIONES, $cParametroRegistro );
			$this->addSelectionAction ( ELIMINAR_UNA_CLASE, "cPathModule=" . $this->aFields['cPathModule'] );
		}
	function makeRowActions( $aRow )
		{
			$cParametroRegistro =  "cPathModule=" . $this->aFields['cPathModule'] . "&amp;ncClase=" . $aRow["ncClase"];
			$this->addRowAction ( MODIFICAR_CLASE, $cParametroRegistro );
			$this->addRowAction ( ELIMINAR_UNA_CLASE, $cParametroRegistro );
			// Si es Parametrica => Ver el Contenido
			if ( $aRow["ncTipoClase"] == TIPO_CLASE_PARAMETRICAS )
			{
				$this->addRowAction ( CONSULTAR_TABLA, $cParametroRegistro );
			}
			$this->addRowAction ( GENERAR_TEMPLATES_DE_CLASES, $cParametroRegistro , '', VENTANA_SECUNDARIA );
			$this->addRowAction ( DUPLICAR_UNA_CLASE, $cParametroRegistro );
		}
	function makeComplex ()
		{
			$oLst = $this->oModule->loadClass ( "accion_clase_lst" );
			$oLst->aFields['ncClase'] = $this->aFields['ncClase'];
			$oLst->setNoPaging();
			$oLst->makeDir();
		}
	}
?>
